home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 7 / BBS in a Box - Macintosh - Volume VII (BBS in a Box) (January 1993).iso / Files / Hyper / P / PrFlds1.9.cpt / PrFlds XCMD 1.9 / card_3926.txt < prev    next >
Text File  |  1989-04-27  |  18KB  |  374 lines

  1. -- card: 3926 from stack: in.9
  2. -- bmap block id: 2139
  3. -- flags: 4000
  4. -- background id: 3627
  5. -- name: Title Card
  6.  
  7.  
  8. -- part 2 (button)
  9. -- low flags: 80
  10. -- high flags: 8003
  11. -- rect: left=98 top=198 right=223 bottom=211
  12. -- title width / last selected line: 0
  13. -- icon id / first selected line: 0 / 0
  14. -- text alignment: 1
  15. -- font id: 0
  16. -- text size: 12
  17. -- style flags: 0
  18. -- line height: 16
  19. -- part name: load fields
  20. ----- HyperTalk script -----
  21. on mouseUp
  22.   go to card 2
  23.   put empty into accum
  24.   put the number of bkgnd fields into howMany
  25.   repeat with ii = 1 to howMany
  26.     put quote & the short name of bkgnd field ii & quote into thingg
  27.     put the short ID of bkgnd field ii & "," before thingg
  28.     put thingg into line ii of accum
  29.   end repeat
  30.   go to card 1
  31.   put accum into card field "field info 1"
  32. end mouseUp
  33.  
  34.  
  35.  
  36. -- part 12 (field)
  37. -- low flags: 80
  38. -- high flags: 4007
  39. -- rect: left=4 top=42 right=235 bottom=512
  40. -- title width / last selected line: 0
  41. -- icon id / first selected line: 0 / 0
  42. -- text alignment: 0
  43. -- font id: 3
  44. -- text size: 9
  45. -- style flags: 0
  46. -- line height: 10
  47. -- part name: Print Options
  48.  
  49.  
  50. -- part 14 (button)
  51. -- low flags: 00
  52. -- high flags: 8003
  53. -- rect: left=246 top=311 right=333 bottom=367
  54. -- title width / last selected line: 0
  55. -- icon id / first selected line: 0 / 0
  56. -- text alignment: 1
  57. -- font id: 0
  58. -- text size: 12
  59. -- style flags: 0
  60. -- line height: 16
  61. -- part name: Build Print Specs
  62. ----- HyperTalk script -----
  63. on mouseUp
  64.   put "," into comma
  65.   ask "The Background of which card?" with the number of cards
  66.   if it is empty then exit mouseUp
  67.   push card
  68.   go to card it
  69.   put empty into accum
  70.   put the number of cards of this bkgnd into accum
  71.   ask "Number of columns per page:" with 1
  72.   if it is empty then exit mouseUp
  73.   put comma & it after accum
  74.   put the number of bkgnd fields into howMany
  75.   put comma & howMany after accum
  76.   ask "Gap between records:" with 8
  77.   if it is empty then exit mouseUp
  78.   put comma & it after accum
  79.   ask "Page Title:" with the short name of this Bkgnd
  80.   if it is empty then exit mouseUp
  81.   put comma & it after accum
  82.   set cursor to 4
  83.   repeat with ii = 1 to howMany
  84.     put the ID of bkgnd field ii into aLine
  85.     put comma & the rect of bkgnd field ii after aLine
  86.     put comma & the textFont of bkgnd field ii after aLine
  87.     put comma & the textSize of bkgnd field ii after aLine
  88.     put comma & the textHeight of bkgnd field ii after aLine
  89.     put comma & the textStyle of bkgnd field ii into thingg
  90.     put comma after aLine
  91.     put the number of items of thingg into hm
  92.     if hm>0 then
  93.       repeat with iii = 1 to hm
  94.         put char 1 of item iii of thingg after aLine
  95.       end repeat
  96.     else
  97.       put "P" after aLine
  98.     end if
  99.     put comma & the textAlign of bkgnd field ii after aLine
  100.     put ",no," & the short name of bkgnd field ii after aLine
  101.     put return & aLine after accum
  102.   end repeat
  103.   pop card
  104.   put accum into card field "print options"
  105.   set the name of bkgnd button ID 4 to "Hide Print Specs"
  106.   show bkgnd button ID 4
  107.   show card field "print options"
  108. end mouseUp
  109.  
  110.  
  111.  
  112. -- part 15 (button)
  113. -- low flags: 00
  114. -- high flags: 8000
  115. -- rect: left=400 top=275 right=326 bottom=470
  116. -- title width / last selected line: 0
  117. -- icon id / first selected line: 1007 / 1007
  118. -- text alignment: 1
  119. -- font id: 0
  120. -- text size: 12
  121. -- style flags: 0
  122. -- line height: 16
  123. -- part name: print example
  124. ----- HyperTalk script -----
  125. on mouseUp
  126.   answer "Print or just show output on the screen?" with "Cancel" OR "Print" OR "Show"
  127.   if it is "Cancel" then exit mouseUp
  128.   if it is "Show" then
  129.     put "TUNV" into oKeys
  130.   else
  131.     put "TUV" into oKeys
  132.   end if
  133.   put card field "print options" of card 1 into specs
  134.   go to last card -- go to the card to be printed first
  135.   put the number of cards of this bkgnd into item 1 of specs
  136.   prFlds "specs",oKeys -- the name of the specs variable must be in quotes
  137.   go to card 1
  138. end mouseUp
  139.  
  140.  
  141. -- please note: This button is an example that depends on the print
  142. -- specifications being loaded in a card field named "print options"
  143. -- of the first card of the stack.  The options chosen request a title
  144. -- on each page and a line drawn between each record.  Also, the version
  145. -- number will be shown as the print process begins.  To make this
  146. -- button work on your stack, you must have your stack designed that way
  147. -- or else you will need to somehow get the print
  148. -- specifications into a variable (including the number of cards) and
  149. -- then pass that variable name as the first argument to prFlds.
  150.  
  151.  
  152. -- part 16 (field)
  153. -- low flags: 81
  154. -- high flags: 0004
  155. -- rect: left=2 top=18 right=341 bottom=510
  156. -- title width / last selected line: 0
  157. -- icon id / first selected line: 0 / 0
  158. -- text alignment: 0
  159. -- font id: 3
  160. -- text size: 9
  161. -- style flags: 0
  162. -- line height: 10
  163. -- part name: About
  164. ----- HyperTalk script -----
  165. on mouseUp
  166.   hide the target
  167. end mouseUp
  168.  
  169.  
  170. -- part 17 (field)
  171. -- low flags: 81
  172. -- high flags: 0007
  173. -- rect: left=11 top=75 right=268 bottom=512
  174. -- title width / last selected line: 0
  175. -- icon id / first selected line: 0 / 0
  176. -- text alignment: 0
  177. -- font id: 3
  178. -- text size: 9
  179. -- style flags: 0
  180. -- line height: 10
  181. -- part name: layout
  182. ----- HyperTalk script -----
  183. on mouseUp
  184.   hide the target
  185. end mouseUp
  186.  
  187.  
  188. -- part 18 (field)
  189. -- low flags: 81
  190. -- high flags: 0007
  191. -- rect: left=3 top=21 right=265 bottom=512
  192. -- title width / last selected line: 0
  193. -- icon id / first selected line: 0 / 0
  194. -- text alignment: 0
  195. -- font id: 3
  196. -- text size: 9
  197. -- style flags: 0
  198. -- line height: 10
  199. -- part name: selection
  200. ----- HyperTalk script -----
  201. on mouseUp
  202.   hide the target
  203. end mouseUp
  204.  
  205.  
  206. -- part contents for card part 12
  207. ----- text -----
  208. 1,1,14,8,Insurance/Income
  209. 17,14,45,294,65,New York,12,16,p,left,no,name
  210. 18,316,136,342,153,Palatino,12,16,u,left,no,Bday
  211. 19,350,136,376,153,Geneva,12,16,u,left,no,Bmonth
  212. 20,384,136,410,153,Geneva,12,16,u,left,no,Byear
  213. 21,446,136,472,153,New York,12,16,o,left,no,age
  214. 22,377,24,468,39,Geneva,9,12,be,right,no,Client ID
  215. 23,467,24,503,39,Geneva,9,12,be,left,no,suffix
  216. 24,341,47,503,64,Geneva,12,16,p,left,no,Social Security #
  217. 25,15,68,221,118,Geneva,12,16,p,left,no,Address
  218. 26,15,121,163,138,Monaco,12,16,p,left,no,Home Phone
  219. 27,214,172,362,189,Geneva,12,16,i,left,no,Work Phone
  220. 29,15,149,189,166,Geneva,12,16,p,left,no,Insurance
  221. 41,39,172,211,189,Geneva,12,16,i,left,no,Employer
  222. 43,364,172,461,189,Geneva,12,16,bi,left,no,Income
  223.  
  224. -- part contents for card part 16
  225. ----- text -----
  226. SUGGESTED USE OF THIS STACK: 
  227.  (1) Read the notes here and those shown by clicking on the button "PrFlds Parameter Layout".
  228.  (2) Copy a card, from a stack you want printed, to the end of this stack.
  229.  (3) Arrange the fields the way you want then printed on the page (location, size, font, etc.).
  230.  (4) Return to this card.  Click on the "Build Print Specs" button on this card and answer the questions.
  231.  (5) Make any embellishments to the Specs that you want (see instructions in Parameter Layout text).
  232.  (6) Click on the "print example" button.
  233.  (7) Install PrFlds XCMD into your stack, copy the specs field (with contents) and print button into your stack.
  234.  
  235. ABOUT THIS XCMD:
  236.      PrFlds is an external command (XCMD) that gives general purpose printing capabilities for the content of background fields of a stack.  This version (1.9) is limited to 100 fields (or items) per card.
  237.      PrFlds allows for specification of text areas for each background field.  These text areas may be anywhere on the printed page and of any size and the text in the area may be any one of any fonts recognized by the System, any size, style, line height and justification.  The text area may also be enclosed by a box.
  238.      The collection of fields printed from a card (hereafter called a Record) may also be printed in columns on the page.  For example, the definitions of the text areas for a record may fit within a space 3.5 inches wide by 3.5 inches high (thus printing in two columns with  three records per column).  The text printed may be the contents of a background field, any other text, or even the evaluation of a HyperTalk expression (e.g. the long date).  The pages of the report produced by PrFlds may also have a title line, including page numbers.
  239.      Selection criteria can be specified, in the form of a HyperTalk function handler and located in the stack or background script.  With this option, a certain subset of the cards of the background may be printed.
  240. Click on the button "PrFlds Parameter Layout" for a description of the calling methods of PrFlds.
  241.  
  242. Changes in PrFlds to make version 1.9: a MAJOR bug fix (a problem if more objects were specified than the number of bkgnd fields).  Also better error recovery, i.e. if something goes wrong, it should return properly.
  243.  
  244. PRFlds is Copyright ¬© 1988, University of Utah Computer Center (MEB 3440), Salt Lake City, Utah  84112
  245.  
  246. PrFlds was written by Joseph F. Buchanan at the University of Utah Computer Center and is available for use by anyone provided that proper credit is given for it and its use is not for profit.  Inquiries and questions may be directed to me at the University of Utah Computer Center at (801) 581-6802 or AppleLink: A91.
  247.  
  248.  
  249. -- part contents for card part 17
  250. ----- text -----
  251. PrFlds is VERY general purpose and is therefore somewhat cumbersome in its specifications.  Most of the specifications need to be loaded into a variable (container) and the name of the variable is then passed as the first parameter to the XCMD.  The second parameter specifies options and the third parameter (if needed) contains the name of a handler (hyperTalk function handler found in the background or stack script).  LIMITS: This version of PrFlds (1.9) is limited to 100 objects per record (card) in the report.
  252.  
  253. The options available to PrFlds are as follows:
  254. ‚Ä¢N - Do not send output to the printer.  Instead, show the output on the screen.  This will show a test page.
  255. ‚Ä¢B - Process cards only of this background (of the card showing when PrFlds is invoked).
  256.  Note: if all cards are processed and different backgrounds are encountered where ANY of the specified fields do not exist for that particular background, an error will occur and the print process will fail.
  257. ‚Ä¢P - Do a Page Setup dialog.  This is useful for specifying page orientation and size.
  258. ‚Ä¢S - Look for selection criterea in a HyperTalk function (the name of which is in the third parameter).
  259. ‚Ä¢U - Underline, i.e. draw a line on the page after each record (all fields printed for each card).
  260. ‚Ä¢V - Show the version of PrFlds.  This will appear in a dialog box before printing begins.
  261.  
  262. Example:
  263.                   prFlds "specs","BSUP","ChooseCard(23)"
  264.  
  265. and the "ChooseCard" hyperTalk function handler returning TRUE or FALSE.  This feature is described in detail if you click on the "Special Selection Function" button below.
  266.  
  267. The example shown will display a Page Setup dialog before printing.  When printing, it will select only those cards of the background satisfy the condition specified in the function ChooseCard.  A line will be drawn after each record.
  268.  
  269. The "Specs" information is as follows:
  270.  
  271. ‚Ä¢ line 1:
  272.    ‚Ä¢ item 1: The number of cards to be printed (or examined).  This is usually the number of cards of the
  273.                   background or stack.  If, instead, you desire to print multiple copies if one record (the
  274.                   contents of the current card), then precede this number by the letter "R".
  275.    ‚Ä¢ item 2: The number of columns per page.  NOTE -  Column boundaries are calculated by dividing the
  276.                   number of columns into the page width.  If the size and location parameters of individual fields
  277.                   exceed these boundaries, those areas of the printed page will be overwritten.
  278.    ‚Ä¢ item 3: The number of objects to be printed in the record.  This includes each field as well as other
  279.                   information that is specified in the subsequent lines of this "Specs" information area.  This is 
  280.                   usually the number of lines of "Specs" minus 1.
  281.    ‚Ä¢ item 4: The size of the gap showing between records (and at the top of the page).
  282.    ‚Ä¢ item 5: The title to show at the top of each page.  If there is something in this item, even if it is a
  283.                   space character, then a title will be printed, along with a page number, otherwise no title nor
  284.                   page numbers will be printed.
  285.  
  286. ‚Ä¢ all other lines (one line per object or field):
  287.    ‚Ä¢ item 1: Object identification - one of the following:
  288.                 a.  The background field ID number (a positive number).
  289.                       OR
  290.                 b.  The negative value of a background field ID number - The name of the background field is to
  291.                      be printed instead of its value.
  292.                       OR
  293.                 c.  The letter "X" - in this case the text found in item 12 will be evaluated as a HyperTalk
  294.                      expression and used in this place.
  295.                       OR
  296.                 d.   The number "0" - The text in item 12 is to be printed as is.
  297.  
  298.            NOTE:  If item 12 is blank for choices c or d above, then no text will be printed, rather, a line will
  299.              be drawn connecting the points specified in items 2 and 3 with those in items 4 and 5.
  300.    ‚Ä¢ items 2 and 3:  The coordinates of the top left corner of the rectangle to contain the text specified in
  301.        item 1.
  302.    ‚Ä¢ items 4 and 5:  The coordinates of the bottom right corner of the rectangle to contain the text
  303.        specified in item 1.
  304.       NOTE: The coordinates are specified in the same manner as that of the Macintosh screen, i.e. the top
  305.          left corner of the screen is 0,0 and the bottom right is 512,342.  Paper sizes are appropriately
  306.          larger with the size being approximately 75 dots per inch.  PrFlds DOES NOT check to see if page
  307.          boundaries are exceeded.  If you specify areas beyond the physical page, the specified text will not
  308.          show.  Also, note that if a box os to be drawn around a text object, it will appear a few pixels
  309.          beyond the specified rectangle and can therefore be drawn off the edge of the page.
  310.       ALSO:  As explained in item 1, a line may be drawn from the point defined by items
  311.          2 and 3 to the point defined by items 4 and 5.
  312.    ‚Ä¢ item 6:  The Font name.  This can be any font name as recognized by the System.
  313.    ‚Ä¢ item 7:  The Font size.
  314.    ‚Ä¢ item 8:  The text height (the height of the line).
  315.    ‚Ä¢ item 9:  The text style.  Use the first letter of the style.  Combine as many as you like.  These can
  316.                       include: Plain, Bold, Italic, Underline, Outline, Shadow, Extend, Compress.
  317.    ‚Ä¢ item 10: The text alignment:  Center, Left or Right.
  318.    ‚Ä¢ item 11:  Border?  If yes, then a border is drawn around the text box, otherwise not.
  319.    ‚Ä¢ item 12:  A text description.  This is treated as a comment and ignored unless item 1 is "0" or "X".
  320.  
  321. A button has been programmed on this card to take a card of background fields and construct a print specifications list based on those background fields.  You can copy a card from your stack and paste it into this stack and then use the button to see how to construct the print specifications.  You may not want the same arrangement of fields in your printed report as is on your card, so you might first re-adjust the location of your fields and eliminate some fields from the constructed list.  You may also wish to embellish the record with other objects like field names, additional information and borders.
  322.  
  323. Note: The physical size on the paper of the area to contain the record objects is determined by the rectangles specified for the record objects.  The highest number of the item 4 parameters of the objects list is used as the height of the record rectangle.  The height of the record plus the record gap will be used to determine how many records can fit on a page.
  324.  
  325. Other Notes:
  326.      As PrFlds works, it examines all cards, the cards will appear on the screen as they are considered.
  327.      As the report is being printed, a status is shown in the message window showing the approximate progress (by page number being processed and percent of cards of the stack).  This progress is only an approximate and may not be totally accurate.
  328.      Printing will not actually begin until the entire report is processed.  Then if the print does not happen, it may be that there was not enough room on the system disk or in memory to assemble the report (or else that disk was locked).
  329.  
  330. -- part contents for card part 18
  331. ----- text -----
  332. In printing your information from a stack, you may want to extract a subset from the total collection of cards of the background.  The third parameter to the PrFlds XCMD will be used to make the determination whether a particular card is to be printed.
  333.  
  334. The following is the method loop of card examination:
  335.  
  336. ‚Ä¢ a. If the S option is specified, then evaluate the function whose name is found in the third parameter.
  337.     - if the returned value of the function is FALSE, then ignore the card
  338.    b.  if the S option is not specified, OR if the value returned is TRUE, then process the card.
  339. ‚Ä¢ Go to the next card of this background.
  340.  
  341. The function will usually be a hyperTalk function handler found in the background or stack script, but it might also be something else that returns TRUE or FALSE.
  342.  
  343. An example is as follows:
  344.  
  345.                   prFlds "specs","S","ChooseCard(23)"
  346.  
  347.   function ChooseCard xxx
  348.     if field age>xxx then
  349.       return TRUE
  350.     else
  351.       return FALSE
  352.     end if
  353.   end ChooseCard
  354.  
  355. The card will be chosen if it has a value in the background field AGE of greater than 23.
  356.  
  357. ADDITIONAL INFORMATION:
  358.  
  359. In most cases, a Control-period will terminate the process of printing.  Sometimes the XCMD might be in your function if there is some loop problem.  Therefore PrFlds was designed to also look for a "Cancel" to be returned from the function and then cancel the entire print process.  A use of this is shown below:
  360.  
  361.   function ChooseCard xxx
  362.     if the commandKey is down then  -- Note: we cannot check for a period, only the commandKey
  363.       return "Cancel"
  364.       exit ChooseCard
  365.     end if
  366.     if field age>xxx then
  367.       return TRUE
  368.     else
  369.       return FALSE
  370.     end if
  371.   end ChooseCard
  372.  
  373. In this example, if you hold the command key down while the selection function is invoked, the "Cancel" message will be returned to PrFlds and the process will terminate.
  374.